home *** CD-ROM | disk | FTP | other *** search
File List | 1994-03-01 | 12.7 KB | 616 lines |
- $e
- $i+
- $s<
- $m 100000
- '
- ' Liaison Casio Fx 850p - Atari St (sources GFA 3.5)
- ' (c) William Saint-Cricq
- '
- ' Diffusion libre de ces sources sauf
- ' pour utilisation commerciale dans quel
- ' cas il faudra demand l'autorisation de
- ' l'auteur.
- ' Toutes modifications du programme est
- ' autorises si le nom de l'auteur est
- ' bien respect.
- '
- ' Merci.
- '
- CLEAR
- version$="2.02"
- dat$="Fvrier 1992"
- '
- HIDEM
- '
- IF XBIOS(4)<>2
- ALERT 3,"|Uniquement en monochrome ",1," SORRY ",ret%
- END
- ENDIF
- IF FRE(0)-32000<=0
- ALERT 3,"|Pas assez de mmoire",0," OK ",ret%
- END
- ENDIF
- '
- ' RESERVE FRE(0)-32000
- @charge_ecran
- '
- IF fin!
- END
- ENDIF
- '
- @init
- '
- ON MENU BUTTON 1,1,1 GOSUB gere_souris
- ON MENU KEY GOSUB gere_clavier
- DO
- ON MENU
- EXIT IF fin!
- LOOP
- END
- '
- ' ********************** routines principales
- > PROCEDURE charge_ecran
- INLINE adr_doc%,32000
- ' adr_doc=MALLOC(32000)
- ' IF adr_doc=0
- ' PRINT "Pas assez de mmoire !"
- ' @fin
- ' ELSE
- ' BLOAD "DOC.PIC",adr_doc
- ' ENDIF
- INLINE adr_som%,32000
- ' adr_som=MALLOC(32000)
- ' IF adr_som=0
- ' PRINT "Pas assez de mmoire !"
- ' @fin
- ' ELSE
- ' BLOAD "SOMMAIRE.PIC",adr_som
- ' ENDIF
- RETURN
- > PROCEDURE init
- ' Mise en place tampon Rs232 avec sauvegarde de l'ancien
- ' Ancien Tampon
- ad%=XBIOS(14,0)
- initin%=LPEEK(ad%)
- longin%=DPEEK(ad%)
- ad%=XBIOS(14,0)+14
- initout%=LPEEK(ad%)
- longout%=DPEEK(ad%)
- ' Nouveau Tampon
- xxxin%=GEMDOS(&H48,L:256) ! Malloc
- xbios14in(xxxin%,256) ! Buffer d'entre
- xxxout%=GEMDOS(&H48,L:16) ! Malloc
- xbios14out(xxxout%,16) ! Buffer de sortie
- '
- '
- erreur!=FALSE
- fin!=FALSE
- ok!=FALSE
- CLR programme$ ! variable o il y a le programme CASIO
- ~XBIOS(&H21,&X100)
- @aff_som
- nom_prog$="CASIO.CAS"
- prog$="CASIO.CAS"
- nbe_octets$="0"
- nbe_lignes$="0"
- statut$="Attente..."
- vitesse$="1200"
- no_serie$=@no_serie$
- ' IF chemin$=""
- ' chemin$="*.*"
- ' ENDIF
- @info_memoire
- @affiche_info
- SHOWM
- DEFMOUSE 3
- RETURN
- > PROCEDURE xbios14out(adr%,l%)
- LOCAL ad%
- ad%=XBIOS(14,0)+14
- SLPOKE ad%,adr%
- SDPOKE ad%+4,l%
- SLPOKE ad%+6,0
- PAUSE 10
- RETURN
- > PROCEDURE xbios14in(adr%,l%)
- LOCAL ad%
- ad%=XBIOS(14,0)
- SLPOKE ad%,adr%
- SDPOKE ad%+4,l%
- SLPOKE ad%+6,0
- PAUSE 10
- RETURN
- > FUNCTION no_serie$
- LOCAL a$,b$,a%
- a$=" WTel"
- RETURN a$
- ENDFUNC
- > PROCEDURE aff_som
- BMOVE adr_som%,XBIOS(2),32000
- @ligne(0)
- RETURN
- > PROCEDURE aff_doc
- BMOVE adr_doc%,XBIOS(2),32000
- RETURN
- > PROCEDURE info_memoire
- mem_ram$=STR$(FRE(0))+" octets"
- mem_disk$=STR$(DFREE(0))+" octets"
- disk%=GEMDOS(25)
- SELECT disk%
- CASE 0
- disk$="A"
- CASE 1
- disk$="B"
- CASE 2
- disk$="C"
- CASE 3
- disk$="D"
- CASE 4
- disk$="E"
- CASE 5
- disk$="F"
- CASE 6
- disk$="G"
- CASE 7
- disk$="H"
- CASE 8
- disk$="I"
- CASE 9
- disk$="J"
- CASE 10
- disk$="K"
- CASE 11
- disk$="L"
- CASE 12
- disk$="M"
- DEFAULT
- disk$="?"
- ENDSELECT
- RETURN
- > PROCEDURE affiche_info
- DEFTEXT 1,,,13
- TEXT 480,144,prog$ !nom du programme
- TEXT 480,161,nbe_octets$ !nombre d'octets
- TEXT 480,178,nbe_lignes$ !nombre de lignes
- TEXT 400,212,statut$ !Satut
- TEXT 456,246,mem_ram$ !mmoire libre
- TEXT 456,263,mem_disk$ !disk free
- TEXT 456,280,disk$ !disk utilis
- TEXT 488,314,vitesse$ !vitesse de transfert
- DEFTEXT 1,0,0,4
- TEXT 136,344,no_serie$
- DEFTEXT 1,,,6
- TEXT 99,300,"Version "+version$
- TEXT 99,310,dat$
- DEFTEXT 1,,,13
- RETURN
- > PROCEDURE config
- ALERT 0,"|Non disponible |sur cette version ",1," OK ",ret%
- RETURN
- > PROCEDURE gere_souris
- x=MOUSEX
- y=MOUSEY
- ' TEXT 100,100,STR$(x)+" "+STR$(y)
- IF x>13 AND x<81 AND y>19 AND y<64
- @loading
- ok!=TRUE
- ENDIF
- IF x>105 AND x<175 AND y>19 AND y<64
- @saving
- ok!=TRUE
- ENDIF
- IF x>199 AND x<240 AND y>19 AND y<64
- @affiche_prog
- ok!=TRUE
- ENDIF
- IF x>264 AND x<366 AND y>19 AND y<64
- @imprimer
- ok!=TRUE
- ENDIF
- IF x>385 AND x<436 AND y>19 AND y<64
- @charge_prog
- ok!=TRUE
- ENDIF
- IF x>459 AND x<510 AND y>19 AND y<64
- @sauve_prog
- ok!=TRUE
- ENDIF
- IF x>519 AND x<623 AND y>21 AND y<58
- @fin
- ENDIF
- '
- IF ok!
- @aff_som
- statut$="Attente..."
- @affiche_info
- ok!=FALSE
- ENDIF
- '
- RETURN
- > PROCEDURE gere_clavier
- clavier=SHR(MENU(14),8)
- SELECT clavier
- CASE &H3B
- @loading
- ok!=TRUE
- CASE &H3C
- @saving
- ok!=TRUE
- CASE &H3D
- @affiche_prog
- ok!=TRUE
- CASE &H3E
- @imprimer
- ok!=TRUE
- CASE &H3F
- @charge_prog
- ok!=TRUE
- CASE &H40
- @sauve_prog
- ok!=TRUE
- CASE &H44
- @fin
- CASE &H62
- @aide
- CASE &H61
- @config
- ENDSELECT
- '
- IF ok!
- @aff_som
- statut$="Attente..."
- @affiche_info
- ok!=FALSE
- ENDIF
- '
- RETURN
- '
- ' ********************** instructions
- > PROCEDURE loading
- LOCAL v%,choix%,a$,a!,temps%,i%
- CLR programme$,nbe_lignes$,nbe_octets$
- mem_ram$=STR$(FRE(0))+" octets"
- statut$="Casio Atari"
- @aff_som
- @affiche_info
- ALERT 0," Vitesse de transfert | Casio Atari ?",3," 600 | 1200 | 2400 ",choix%
- IF choix%=1
- vitesse$=" 600"
- v%=8
- ELSE IF choix%=2
- vitesse$="1200"
- v%=7
- ELSE
- vitesse$="2400"
- v%=4
- ENDIF
- @affiche_info
- ~XBIOS(15,v%,3,142,-1,-1,-1)
- ' auxin_base%=XBIOS(14,0) !
- ' IF DPEEK(auxin_base%+4)<5120 !
- ' auxin_buffer%=MALLOC(5120) !toute cette partie (lignes 42 @ 53)
- ' IF auxin_buffer%>0 !cree un nouveau tampon pour
- ' PRINT "nouveau buffer" !l'entree des donnes de la prise
- ' LPOKE (auxin_base%),auxin_buffer% !serie. Si le tampon existant est
- ' DPOKE (auxin_base%+4),5120 !inferieur a 5Ko, alors on en cree
- ' ELSE !un nouveau
- ' PRINT "Pas assez de memoire pour le buffer AUXIN"
- ' END !
- ' ENDIF !
- ' ENDIF !
- WHILE INP?(1)<>FALSE
- a%=INP(1)
- WEND
- ALERT 0," Tapez SAVE ""COM0:x |x:3 (600),4 (1200),5 (2400) ",1," OK | NON ",ret%
- CLR t$
- IF ret%=1
- DO
- a$=INPAUX$
- t$=INKEY$
- IF a$<>""
- programme$=programme$+a$
- z%=LEN(programme$)
- TEXT 480,161,STR$(z%) !nombre d'octets
- @ligne(FRAC(z%/512))
- a!=FALSE
- ELSE IF a!=FALSE
- temps%=TIMER
- a!=TRUE
- ENDIF
- LOOP UNTIL (TIMER-temps%)>200*5*2 OR t$=CHR$(27)
- FOR i%=1 TO LEN(programme$)
- IF MID$(programme$,i%,1)=CHR$(10)
- nbe_lignes$=STR$(VAL(nbe_lignes$)+1)
- ENDIF
- NEXT i%
- nbe_octets$=STR$(LEN(programme$))
- ENDIF
- RETURN
- > PROCEDURE saving
- LOCAL choix%,i%,v%
- mem_ram$=STR$(FRE(0))+" octets"
- statut$="Atari Casio"
- @aff_som
- ALERT 0," Vitesse de transfert | Atari Casio ?",3," 600 | 1200 | 2400 ",choix%
- IF choix%=1
- vitesse$=" 600"
- v%=8
- ELSE IF choix%=2
- vitesse$="1200"
- v%=7
- ELSE
- vitesse$="2400"
- v%=4
- ENDIF
- @affiche_info
- ~XBIOS(15,v%,3,142,-1,-1,-1)
- ' auxin_base%=XBIOS(14,0) !
- ' IF DPEEK(auxin_base%+4)<5120 !
- ' auxin_buffer%=MALLOC(5120) !toute cette partie (lignes 42 @ 53)
- ' IF auxin_buffer%>0 !cree un nouveau tampon pour
- ' PRINT "nouveau buffer" !l'entree des donnes de la prise
- ' LPOKE (auxin_base%),auxin_buffer% !serie. Si le tampon existant est
- ' DPOKE (auxin_base%+4),5120 !inferieur a 5Ko, alors on en cree
- ' ELSE !un nouveau
- ' PRINT "Pas assez de memoire pour le buffer AUXIN"
- ' END !
- ' ENDIF !
- ' ENDIF !
- WHILE INP?(1)<>FALSE
- a%=INP(1)
- WEND
- ALERT 0," Tapez LOAD ""COM0:x |x:3 (600),4 (1200),5 (2400) ",1," OK | NON ",ret%
- IF ret%=1
- PAUSE 200
- IF OUT?(1)=FALSE
- ALERT 1," Casio non connect ??? ",1," OK ",ret%
- ELSE
- FOR i%=1 TO LEN(programme$)
- OUT 1,ASC(MID$(programme$,i%,1))
- @ligne(i%/LEN(programme$))
- EXIT IF INKEY$=CHR$(27)
- NEXT i%
- ENDIF
- ENDIF
- PAUSE 200
- RETURN
- > PROCEDURE ligne(pourcentage)
- GRAPHMODE 1
- DEFFILL 1,2,2
- IF pourcentage<=0
- PBOX 344,320,576,336
- ENDIF
- IF pourcentage<=1
- IF pourcentage>0
- DEFFILL 1,2,4
- PBOX 346,322,346+228*pourcentage,334
- ENDIF
- ENDIF
- RETURN
- '
- > PROCEDURE imprimer
- LOCAL choix%,a$,y,i,x,p
- statut$="Impression tampon"
- @aff_som
- @affiche_info
- ALERT 1," Imprimante alume ? ",1,"OUI|NON",choix%
- IF choix%=1
- LPRINT "Nom du fichier:";nom_prog$
- LPRINT "Nb lignes:";nbe_lignes$,"Nb octets:";nbe_octets$
- LPRINT
- y=0
- i=1
- x=1
- p=1
- bouc:
- a$=""
- REPEAT
- REPEAT
- IF MID$(programme$,i,1)<>CHR$(10) AND MID$(programme$,i,1)<>CHR$(13)
- a$=a$+MID$(programme$,i,1)
- ELSE IF MID$(programme$,i,1)=CHR$(13)
- i=i+1
- x=79
- ENDIF
- x=x+1
- i=i+1
- UNTIL x=80 OR i>=LEN(programme$)
- x=1
- LPRINT a$
- y=y+1
- a$=""
- UNTIL y=57 OR i>=LEN(programme$)
- p=p+1
- LPRINT
- LPRINT "Page No";p
- IF i>=LEN(programme$) AND y<57
- LPRINT " ******** FIN ********"
- ELSE
- y=0
- ALERT 0," Changement de page ",1," OK ",choix%
- GOTO bouc
- ENDIF
- ENDIF
- RETURN
- '
- > PROCEDURE charge_prog
- @info_memoire
- statut$="Chargement programme"
- @aff_som
- @affiche_info
- CLR programme$,nbe_lignes$,nbe_octets$
- '
- IF prog$=""
- prog$="CASIO.CAS"
- ENDIF
- FILESELECT chemin$,prog$,nom_prog$
- @test_nom_prog
- '
- IF (NOT erreur!) AND EXIST(nom_prog$)
- OPEN "i",#1,nom_prog$
- REPEAT
- LINE INPUT #1,a$
- programme$=programme$+CHR$(13)+CHR$(10)+a$
- UNTIL EOF(#1)
- CLOSE #1
- programme$=programme$+CHR$(13)+CHR$(10)
- x=0
- FOR i%=1 TO LEN(programme$)
- IF MID$(programme$,i%,1)=CHR$(10)
- x=x+1
- nbe_lignes$=STR$(VAL(nbe_lignes$)+1)
- ENDIF
- NEXT i%
- nbe_octets$=STR$(LEN(programme$))
- @affiche_info
- ENDIF
- RETURN
- '
- > PROCEDURE sauve_prog
- @info_memoire
- statut$="Sauvegarde programme"
- @aff_som
- @affiche_info
- '
- FILESELECT chemin$,prog$,nom_prog$
- @test_nom_prog
- '
- IF NOT erreur!
- OPEN "o",#1,nom_prog$
- PRINT #1,programme$
- CLOSE #1
- ENDIF
- @affiche_info
- RETURN
- '
- > PROCEDURE fin
- ALERT 2,"|Retour au GEM",1," OUI | NON ",ret%
- IF ret%=1
- fin!=TRUE
- ' On remet l'ancien Tampon
- xbios14in(initin%,longin%)
- xbios14out(initout%,longout%)
- ' On fait les Mfree
- ~GEMDOS(&H49,L:xxxin%)
- ~GEMDOS(&H49,L:xxxout%)
- a=MFREE(adr_doc)
- a=MFREE(adr_som)
- ' RESERVE
- ELSE
- fin!=FALSE
- ENDIF
- RETURN
- '
- > PROCEDURE aide
- @aff_doc
- TEXT 365,180,"- transfert Casio Atari"
- TEXT 365,180+15,"- sauvegarde sur disque"
- TEXT 365,180+15*2,"- impression listing"
- DEFTEXT 1,1,0,13
- TEXT 365,180+15*4,"Programme en ShareWare !"
- DEFTEXT 1,0,0,13
- TEXT 365,180+15*5,"Merci d'envoyer un chque"
- TEXT 365,180+15*6,"de 50 Frs
:"
- DEFTEXT 1,1,0,6
- TEXT 370,180+15*7,"William Saint-Cricq"
- TEXT 370,180+15*7+9,"9 Rsidence Bel Air"
- TEXT 370,180+15*7+9*2,"65000 TARBES"
- DEFTEXT 1,0,0,4
- TEXT 370,180+15*7+9*3,"CCP 2502 C Toulouse"
- TEXT 50,180+18*7,"Un grand merci
"
- TEXT 50,180+18*7+9,"THE HOBBIT pour son aide."
- TEXT 50,180+18*7+9*3,"Un kiss
ma bien ame Marie."
- DEFTEXT 1,0,0,13
- TEXT 250,393,"Tapez sur une touche"
- REPEAT
- UNTIL INKEY$<>""
- @aff_som
- @affiche_info
- RETURN
- '
- > PROCEDURE affiche_prog
- LOCAL a$,y,i,x,j
- y=0
- i=1
- x=1
- @fenetre("Tapez sur ESC pour sortir | RETURN pour la suite","Nb octets:"+nbe_octets$+" | Nb lignes:"+nbe_lignes$)
- boucle:
- a$=""
- REPEAT
- REPEAT
- IF MID$(programme$,i,1)<>CHR$(10) AND MID$(programme$,i,1)<>CHR$(13)
- IF MID$(programme$,i,1)=>" "
- a$=a$+MID$(programme$,i,1)
- ELSE
- a$=a$+" "
- ENDIF
- ELSE IF MID$(programme$,i,1)=CHR$(13)
- i=i+1
- x=66
- ENDIF
- x=x+1
- i=i+1
- UNTIL x=67 OR i>=LEN(programme$)
- x=1
- PRINT AT(7,6+y);a$
- y=y+1
- a$=""
- UNTIL y=16 OR i>=LEN(programme$)
- IF i>LEN(programme$) AND y<16
- PRINT AT(7,6+y+1);" ******** FIN ********"
- ENDIF
- boucle2:
- a$=INKEY$
- IF a$=CHR$(13) AND i<LEN(programme$)
- y=0
- DEFFILL 1,0
- BOUNDARY 0
- PBOX 49,79,583,343
- GOTO boucle
- ENDIF
- IF a$<>CHR$(&H1B)
- GOTO boucle2
- ENDIF
- RETURN
- '
- ' ********************** divers
- > PROCEDURE test_nom_prog
- CLR erreur!
- IF nom_prog$="" OR nom_prog$="\"
- erreur!=TRUE
- ELSE
- prog$=RIGHT$(nom_prog$,12)
- CLR a$
- FOR i%=1 TO LEN(prog$)
- a$=MID$(prog$,i%,1)
- EXIT IF a$="\"
- NEXT i%
- IF i%<LEN(prog$)
- prog$=MID$(prog$,i%+1)
- ENDIF
- erreur!=FALSE
- chemin$=MID$(nom_prog$,1,LEN(nom_prog$)-LEN(prog$))+"*.*"
- ENDIF
- RETURN
- > PROCEDURE fenetre(titre$,info$)
- CLS
- @aff_doc
- DEFFILL 1,2,2
- PBOX 25,7,609,43
- DEFFILL 1,0
- BOUNDARY 0
- PBOX 49,79,583,343
- PBOX 30,12,604,38
- BOUNDARY 1
- DEFFILL 1,2,8
- PBOX 40,45,595,70
- DEFFILL 1,0
- PBOX 40,45,593,68
- TEXT 37,30,560,titre$
- TEXT 50,62,535,info$
- RETURN
- '
- '
- '
- '
-